home *** CD-ROM | disk | FTP | other *** search
- #ifndef __SPECACHE_HPP_
- #define __SPECACHE_HPP_
-
- #include "specs.hpp"
-
-
- class spec_directory_cache
- {
- class filename_node
- {
- public :
- filename_node *left,*right,*next;
- char *fn;
- spec_directory *sd;
- char *filename() { return fn; }
- filename_node(char *filename, spec_directory *dir)
- {
- fn=(char *)memcpy(jmalloc(strlen(filename)+1,"spec_dir cache"),filename,strlen(filename)+1);
- sd=dir;
- next=left=right=0;
- }
- ~filename_node()
- {
- jfree(fn);
- delete sd;
- }
-
- long size;
- } *fn_root,*fn_list;
- void clear(filename_node *f); // private recursive member
- long size;
- public :
- spec_directory *get_spec_directory(char *filename, bFILE *fp=NULL);
- spec_directory_cache() { fn_root=0; size=0; }
- void clear(); // frees up all allocated memory
- void load(bFILE *fp);
- void save(bFILE *fp);
- ~spec_directory_cache() { clear(); }
- } ;
-
- extern spec_directory_cache sd_cache;
-
- #endif
-